const COS = require('cos-nodejs-sdk-v5');
const fs = require('fs');
const path = require('path');

class CosUtil {
  constructor() {
    this.cos = new COS({
      SecretId: 'AKID2uZ3KNC3g5FBsLZYKsBGWYKrAF6i6E8n', // 替换为你的 SecretId
      SecretKey: 'UAfw0pRwEI8kHbmjSx64qRq55sQnz50l', // 替换为你的 SecretKey
    });
    this.bucket = 'ztapp-1304966785'; // 替换为你的 Bucket 名称
    this.region = 'ap-nanjing'; // 替换为你的 Bucket 地域
  }

  /**
   * 上传文件到 COS
   * @param {string} filePath 本地文件路径
   * @param {string} key 存储在 COS 中的文件名
   * @returns {Promise<string>} 返回文件的 URL
   */
  uploadFile(filePath, key) {
    return new Promise((resolve, reject) => {
      this.cos.putObject(
        {
          Bucket: this.bucket,
          Region: this.region,
          Key: key,
          Body: fs.createReadStream(filePath),
        },
        (err, data) => {
          if (err) {
            reject(err);
          } else {
            resolve(data.Location); // 返回文件的访问 URL
          }
        }
      );
    });
  }

  /**
   * 下载文件从 COS
   * @param {string} key 存储在 COS 中的文件名
   * @param {string} localPath 下载到本地的路径
   * @returns {Promise<void>}
   */
  downloadFile(key, localPath) {
    return new Promise((resolve, reject) => {
      this.cos.getObject(
        {
          Bucket: this.bucket,
          Region: this.region,
          Key: key,
        },
        (err, data) => {
          if (err) {
            reject(err);
          } else {
            fs.writeFileSync(localPath, data.Body);
            resolve();
          }
        }
      );
    });
  }

  /**
   * 删除 COS 中的文件
   * @param {string} key 存储在 COS 中的文件名
   * @returns {Promise<void>}
   */
  deleteFile(key) {
    console.log(key);
    return new Promise((resolve, reject) => {
      this.cos.deleteObject(
        {
          Bucket: this.bucket,
          Region: this.region,
          Key: key,
        },
        (err, data) => {
          console.log('============================');
          console.log(err);
          console.log('============================');
          console.log(data);
          console.log('============================');
          if (err) {
            reject(err);
          } else {
            resolve();
          }
        }
      );
    });
  }
}

module.exports = CosUtil;